<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.2 &raquo; Source: structures/ScheduledEvent.js</title>
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
    <div id="jsdoc-navbar-container">
      <div id="jsdoc-navbar-content">
        <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>2</a>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <div id="jsdoc-content-container">
        <div id="jsdoc-banner" role="banner">
        </div>
        <div id="jsdoc-main" role="main">
          <header class="page-header">
            <h1>Source: structures/ScheduledEvent.js</h1>
          </header>
          <article>
            <pre class="prettyprint linenums"><code>&#x27;use strict&#x27;;

/**
 * ScheduledEvent send options
 * @typedef {Object} ScheduledEventSendOptions
 * @property {?string} description The scheduled event description
 * @property {?Date} endTime The end time of the event
 * @property {?string} location The location of the event
 * @property {?string} callType The type of a WhatsApp call link to generate, valid values are: &#x60;video&#x60; | &#x60;voice&#x60;
 * @property {boolean} [isEventCanceled &#x3D; false] Indicates if a scheduled event should be sent as an already canceled
 * @property {?Array&amp;lt;number&gt;} messageSecret The custom message secret, can be used as an event ID. NOTE: it has to be a unique vector with a length of 32
 */

/** Represents a ScheduledEvent on WhatsApp */
class ScheduledEvent {
    /**
     * @param {string} name
     * @param {Date} startTime
     * @param {ScheduledEventSendOptions} options
     */
    constructor(name, startTime, options &#x3D; {}) {
        /**
         * The name of the event
         * @type {string}
         */
        this.name &#x3D; this._validateInputs(&#x27;name&#x27;, name).trim();

        /**
         * The start time of the event
         * @type {number}
         */
        this.startTimeTs &#x3D; Math.floor(startTime.getTime() / 1000);

        /**
         * The send options for the event
         * @type {Object}
         */
        this.eventSendOptions &#x3D; {
            description: options.description?.trim(),
            endTimeTs: options.endTime ? Math.floor(options.endTime.getTime() / 1000) : null,
            location: options.location?.trim(),
            callType: this._validateInputs(&#x27;callType&#x27;, options.callType),
            isEventCanceled: options.isEventCanceled ?? false,
            messageSecret: options.messageSecret
        };
    }

    /**
     * Inner function to validate input values
     * @param {string} propName The property name to validate the value of
     * @param {string | number} propValue The property value to validate
     * @returns {string | number} The property value if a validation succeeded
     */
    _validateInputs(propName, propValue) {
        if (propName &#x3D;&#x3D;&#x3D; &#x27;name&#x27; &amp;amp;&amp;amp; !propValue) {
            throw new class CreateScheduledEventError extends Error {
                constructor(m) { super(m); }
            }(&#x60;Empty &#x27;${propName}&#x27; parameter value is provided.&#x60;);
        }

        if (propName &#x3D;&#x3D;&#x3D; &#x27;callType&#x27; &amp;amp;&amp;amp; propValue &amp;amp;&amp;amp; ![&#x27;video&#x27;, &#x27;voice&#x27;].includes(propValue)) {
            throw new class CreateScheduledEventError extends Error {
                constructor(m) { super(m); }
            }(&#x60;Invalid &#x27;${propName}&#x27; parameter value is provided. Valid values are: &#x27;voice&#x27; | &#x27;video&#x27;.&#x60;);
        }
        
        return propValue;
    }
}

module.exports &#x3D; ScheduledEvent;
</code></pre>
          </article>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <footer id="jsdoc-footer" class="jsdoc-footer">
    <div id="jsdoc-footer-container">
      <p>
        Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on November 6, 2025.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>